Modern operating systems may support multiple independent time zone (TZ) libraries, such as Olson and POSIX, which are collections of TZ information data by time zone. The TZ libraries and associated TZ information data may be provided as a series of data files. Each TZ library may be searched to obtain the desired TZ information data for a given time zone, for example an offset from Universal Standard Time (UTC), and any applicable Daylight Savings Time (DST) rules.
A computer system may provide a default system-wide TZ library/TZ information data pair setting. Additionally, each user, or application, may have a customizable profile where a preferred TZ library/TZ information data pair is set that overrides the system default. Therefore, within the same computer system several different TZ library/TZ information data pair settings may exist. A system-provided application programming interface (API), for example the localtime( ) function, checks system TZ setting, accepts as input a TZ library/TZ information data pair and returns the time for the requested time zone, formatted according to language and locale settings associated with the requested time zone. However, the TZ library/TZ information data pair is fixed for the duration of the application or user session, and may not be changed dynamically.
Regions around the world can change their TZ information data, for example DST rules, at any time, thereby requiring an update to TZ libraries and TZ information data many times throughout the year to stay current with all the latest TZ information data changes worldwide. However, because updates to TZ information data may be supplied as part of a vendor's operating system maintenance, where the customer's operating system may be not regularly maintained and updated, the TZ information may not be consistent across versions of TZ information data and between TZ libraries. As a result, when TZ information data for a TZ library becomes out of date, the inaccurate time data may adversely affect applications while the users wait for the operating system vendor to supply an update.